// 给定二叉搜索树（BST）的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在，则返回 NULL。

// 例如，

// 给定二叉搜索树:
//         4
//        / \
//       2   7
//      / \
//     1   3
// 和值: 2

// 你应该返回如下子树:
//       2     
//      / \   
//     1   3
// 在上述示例中，如果要找的值是 5，但因为没有节点值为 5，我们应该返回 NULL。


/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} val
 * @return {TreeNode}
 */
var searchBST = function (root, val) {
  // BST框架
  if (!root) return null;
  if (root.val === val) {
    return root;
  }
  // 充分利用BST特性,不需要左右子树全部递归遍历,而是按大小条件选择遍历提高效率
  else {
    if (root.val < val) {
      return searchBST(root.right, val);
    }
    else {
      return searchBST(root.left, val);
    }
  }
};
